Ho un set di dati come indicato di seguito nome col1 col2 a 10.3 10.9 b 11 15 c 20 7.2 d 6.2 6.2 e 5.3 5.4 f 4.5 4.0 voglio confrontare col1 e col2 del mio df e voglio creare un'altra colonna in cui durante il confronto dei valori col1 e col2 se il valore di col2 è in aumento da col1, voglio entrare in aumento accanto a loro nella mia colonna lì e se lo sono decrescente allora voglio scrivere decrescente e nessuna modifica se sono uguali e voglio il mio output in questo modo nome col1 col2 col3 a 10,3 10,9 in aumento b 11 15 crescente c 20 7.2 in diminuzione d 6.2 6.2 nessuna modifica e 5.3 5.4 in aumento f 4,5 4,0 in diminuzione
2021-01-31 08:14:39
Con dplyr: df%>% mutate (Col3 = ifelse (col2 == col1, "nessun cambiamento", ifelse (col2> col1, "crescente", "decrescente"))) O usando case_when come suggerito da @akrun: df%>% mutate (Col3 = case_when (col1 == col2 ~ "no change", col2> col1 ~ "Crescente", VERO ~ "in diminuzione")) Risultato: nome col1 col2 Col3 1 a 10,3 10,9 crescente 2 b 11,0 15,0 crescente 3 c 20,0 7,2 in diminuzione 4 d 6.2 6.2 nessuna modifica 5 e 5.3 5.4 in aumento 6 f 4,5 4,0 in diminuzione Dati: df <-structure (list (name = c ("a", "b", "c", "d", "e", "f"), col1 = c (10.3, 11, 20, 6.2, 5.3, 4.5), col2 = c (10.9, 15, 7.2, 6.2, 5.4, 4)), class = "data.frame", row.names = c (NA, -6L)) | Possiamo sottrarre col1 da col2 e quindi usare il segno per assegnare i valori df $ col3 <- c ("decrescente", "nessuna modifica", "crescente") [segno (df $ col1 - df $ col2) + 2] df # nome col1 col2 col3 # 1 a 10,3 10,9 in diminuzione # 2 b 11,0 15,0 in diminuzione # 3 c 20.0 7.2 in aumento # 4 d 6.2 6.2 nessun cambiamento # 5 e 5.3 5.4 in diminuzione # 6 f 4.5 4.0 crescente Oppure usando dplyr possiamo usare case_when libreria (dplyr) df%>% mutate (col3 = case_when (col1 == col2 ~ "no change", col1> col2 ~ "crescente", VERO ~ "in diminuzione")) | Base R df $ col3 <-with (df, ifelse (col1> col2, "decrescente", ifelse (col1